package com.example.apidocserver.interfaces.assembler;

import com.alibaba.druid.util.StringUtils;
import com.example.apidocserver.domain.document.entity.ApiParamField;
import com.example.apidocserver.infrastructure.util.result.ParamException;

import java.util.Objects;

import static com.example.apidocserver.infrastructure.constants.SystemConstants.STR_NO;
import static com.example.apidocserver.infrastructure.constants.SystemConstants.YES;

/**
 * 接口校验字段
 *
 * @author xyqlg
 */
public class FieldAssembler {
    /**
     * 校验字段数据
     *
     * @param field 字段说明数据
     */
    public static void checkFieldUniKey(ApiParamField field) {
        if (StringUtils.isEmpty(field.getFieldName()) || Objects.isNull(field.getFieldTypeId())
                || Objects.isNull(field.getApiId()) || Objects.isNull(field.getSpaceId())) {
            throw new ParamException("字段名称、值类型、工作空间id、值说明模式不能为空。");
        }
    }

    /**
     * 校验字段数据
     *
     * @param field 字段数据
     */
    public static void checkField(ApiParamField field) {
        checkFieldUniKey(field);
        field.setFieldName(field.getFieldName().trim());
        if (StringUtils.isEmpty(field.getFieldMust())) {
            field.setFieldMust(STR_NO);
        }
        if (Objects.isNull(field.getEnableFlag())) {
            field.setEnableFlag(YES);
        }
        if (Objects.isNull(field.getUsePriority())) {
            field.setUsePriority(YES);
        }
    }
}
